package moodle.Agentes.actions.Companheiro;

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.Date;

import dao.GerenciaCurso;
import dao.MoodleDAO;
import moodle.Org.MoodleEnv;
import moodle.dados.Aluno;
import moodle.dados.Atividade;
import moodle.dados.Curso;
import moodle.dados.atividades.AtividadeNota;
import moodle.dados.atividades.AtividadeParticipacao;
import moodle.dados.mensagem.Mensagem;
import jamder.Environment;
import jamder.behavioural.Action;
import jamder.behavioural.Condition;

public class PesquisarData extends Action {

	private boolean done = false;
	private boolean mantemAtivo;
	
	
	
	public PesquisarData(String name) {
		super(name);
		
	}
	
	public PesquisarData(String name, Condition pre_condition, Condition pos_condition) {
		super(name, pre_condition, pos_condition);
	}
	
	public void execute(Environment env, Object[] params){
		
		block(15*1000L);
		
		
		mantemAtivo = ((MoodleEnv)env).getMantemAgentesAtivos();
		
		if(!mantemAtivo)
			return;
		
		boolean podeEnviar = false;
		
		SimpleDateFormat dateFormat = new SimpleDateFormat();
		
		GerenciaCurso manager = ((MoodleEnv)env).getGerenciaCurso();
		
		BigInteger useridfrom = new BigInteger("2");
		
		for(Curso curso : manager.getCursos()){
			
			for(Aluno aluno : curso.getAlunos()){
				
				/* Buscar informar as datas finais no momento em que chegar proximo ao prazo
				 * Definir como 7 dias antes;
				 */
				
				podeEnviar = false;
				
				BigInteger useridto = aluno.getId();
				
				String smallmessage = "Prezado " + aluno.getCompleteName() + ", \n";
				smallmessage += "Na disciplina " + curso.getFullName() + " há algumas atividades pendentes, são elas: \n\n";
				
				
				for(AtividadeNota at : curso.getAtividadesNota()){
					
					if(at.getAlunosComNotas().containsKey(aluno))
						continue;
					
					String dataFinal = new Date(0).equals(at.getDataFinal()) ? "Sem data final prevista"  : dateFormat.format(at.getDataFinal());
					
					podeEnviar = true;
					dateFormat.applyPattern("dd/MM/yyyy");
					smallmessage += at.getName() + " - Finaliza em: "  + dataFinal;
					dateFormat.applyPattern("H:mm");
					smallmessage += " às " + dateFormat.format(at.getDataFinal()) + "\n\n";
				}
				
				for(AtividadeParticipacao at : curso.getAtividadesParticipacao()){
					
					if(at.getAlunosParticipantes().contains(aluno) || at.getAlunosComNotas().containsKey(aluno))
						continue;
					
					
					String dataFinal = new Date(0).equals(at.getDataFinal()) ? "Sem data final prevista"  : dateFormat.format(at.getDataFinal());
					
					podeEnviar = true;
					dateFormat.applyPattern("dd/MM/yyyy");
					smallmessage += at.getName() + " - Finaliza em: " + dateFormat.format(at.getDataFinal());
					dateFormat.applyPattern("H:mm");
					smallmessage += " às " + dateFormat.format(at.getDataFinal()) + "\n\n";
				}
				
				if(podeEnviar){
				
					String fullmessage = smallmessage;
					
					fullmessage += "\n--------------------------------------------------------------------- \nEste e-mail é a cópia de uma mensagem que foi enviada para você em \"GESMA\". Clique http://127.0.1.1/moodle/message/index.php?user=" + useridto + "&id= " + useridfrom +" para responder. ";
					
					Long time = System.currentTimeMillis();
					
					Mensagem msg = new Mensagem();
					msg.setSubject("Nova mensagem do Administrador");
					msg.setUseridfrom(useridfrom);
					msg.setUseridto(useridto);
					msg.setSmallmessage(smallmessage);
					msg.setFullmessage(fullmessage);
					msg.setTimecreated(time);
					
					((MoodleEnv)env).addMensagem(msg);
					
				}
				
				
			}
		}
		
		
			
		
	
	}
	
	public boolean done() {
		return done;
	}

}
